package com.techfengs.chapter03;

public class AutoConvertDetail {
  public static void main(String[] args) {
    // 自动类型转换细节
    int n1 = 10;
    // √
    // float d1 = n1 + 1.1;
    // ×
    double d1 = n1 + 1.1;
    double f1 = n1 + 1.1F;
    System.out.println(n1);
    System.out.println(d1);
    System.out.println(f1);

    // int n2 = 1.1;
    // ×

    byte b1 = 10;
    // √
    // 先判断数值是否在byte范围内，如果是就可以
    System.out.println(b1);
    // int n2 = 1;
    // byte b2 = n2;
    // ×
    // 如果是变量赋值，则直接判断类型是否匹配
    // char c1 = b1;
    // ×
    // byte, short和char之间不会相互自动转换

    byte b2 = 1;
    short s1 = 1;
    // short s2 = b2 + s1;
    // ×
    int s2 = b2 + s1;
    // √
    System.out.println(s2);
    // byte, short, char三者可以直接参与运算
    // 运算前都先转换为int
    byte b3 = 4;
    // byte b4 = b2 + b3;
    // ×
    int b5 = b2 + b3;
    System.out.println(b5);
    // byte, short, char只要参与运算，类型都转换为了int

    // 自动提升原则
    byte b6 = 1;
    short s3 = 100;
    int num200 = 1;
    double d300 = 1.1;
    double sum = b6 + s3 + num200 + d300;
    System.out.println(sum);
  }
}
